const userDB = require('../db/user');

// 获取用户信息
exports.getProfile = async (req, res) => {
    try {
        const user = await userDB.getUserById(req.user.id);
        if (!user) {
            return res.status(404).json({ error: '用户不存在' });
        }
        res.json(user);
    } catch (error) {
        console.error('获取用户信息失败:', error);
        res.status(500).json({ error: '获取用户信息失败' });
    }
};

// 更新用户信息
exports.updateProfile = async (req, res) => {
    try {
        const { nickname, gender, email, avatar } = req.body;
        
        // 验证数据
        if (!nickname) {
            return res.status(400).json({ error: '昵称不能为空' });
        }
        if (email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
            return res.status(400).json({ error: '邮箱格式不正确' });
        }

        const userData = {
            nickname,
            gender: parseInt(gender),
            email,
            avatar
        };

        await userDB.updateUser(req.user.id, userData);
        const updatedUser = await userDB.getUserById(req.user.id);
        res.json(updatedUser);
    } catch (error) {
        console.error('更新用户信息失败:', error);
        res.status(500).json({ error: '更新用户信息失败' });
    }
};

// 绑定游戏UID
exports.bindGameUid = async (req, res) => {
    try {
        const { gameUid } = req.body;

        // 验证游戏UID
        if (!gameUid || !/^\d{8,10}$/.test(gameUid)) {
            return res.status(400).json({ error: '无效的游戏UID' });
        }

        // 检查UID是否已被其他用户绑定
        const exists = await userDB.checkGameUidExists(gameUid, req.user.id);
        if (exists) {
            return res.status(400).json({ error: '该游戏UID已被其他用户绑定' });
        }

        await userDB.bindGameUid(req.user.id, gameUid);
        const updatedUser = await userDB.getUserById(req.user.id);
        res.json(updatedUser);
    } catch (error) {
        console.error('绑定游戏UID失败:', error);
        res.status(500).json({ error: '绑定游戏UID失败' });
    }
}; 